Skip to content

fix(history): Resolve the href in <base> correctly (#3819) #3823

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

ichaoX
Copy link

@ichaoX ichaoX commented Jan 11, 2023

  • Resolve the href in <base> correctly.

  • In hash mode, the hash in base is automatically removed and the base trailing slash is distinguished.

  • By default the result of router.resolve().href is the same as the actual switched URL.

Relates to: #3819, #2865

@netlify
Copy link

netlify bot commented Jan 11, 2023

Deploy Preview for vue-router-docs-v3 canceled.

Name Link
🔨 Latest commit 992fd4b
🔍 Latest deploy log https://app.netlify.com/sites/vue-router-docs-v3/deploys/646e0bb050065c00085989b1

@posva
Copy link
Member

posva commented Jan 12, 2023

Thanks for the PR. Can you provide a failing test or boiled-down repro? Note a base should not contain a hash

@ichaoX
Copy link
Author

ichaoX commented Jan 12, 2023

An example of reproduction can be found in #3819, and you can view the source code of the Reproduction link.

Some browser extensions or proxies may modify <base>, and as a standard feature of html, it is necessary to support it correctly.

This PR should implement support for almost all legal baseURIs.
The <base> tag is then respected after ensuring the prerequisites of availability and consistency .
Support base.href containing relative URI or hash, even cross-origin cases.

@posva
Copy link
Member

posva commented Jan 12, 2023

That base has a hash though. As I said, it cannot have a hash

@ichaoX
Copy link
Author

ichaoX commented Jan 12, 2023

That reproduction link contains several mistakes at the same time:

  1. incorrect relative path
  2. incorrect hash
  3. there is an extra slash between base and hash

Additional reproduction links:

https://5s3iuf.csb.app/root/path.html

https://5s3iuf.csb.app/root/sameorigin.html

@ichaoX
Copy link
Author

ichaoX commented Jan 25, 2023

@posva
Do you need any other repro?

* Resolve the href in `<base>` correctly.

* In hash mode, the hash in base is automatically removed and the base trailing slash is distinguished.

* By default the result of `router.resolve().href` is the same as the actual switched URL.
@ichaoX ichaoX requested a review from posva May 24, 2023 13:15
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants